import { ErrorMessageMode } from '#/axios';
import { LoginModel } from '@2/typings/model/login.model';
import { Result } from '@2/typings/http.d';
import { Oauth2Token } from '@2/typings/oauth2';

/**
 * @program: microservice-central-portal
 * @description: 获取授权接口定义，用于登录、退出登录、验证码获取等操作。
 * @author: baiHoo.chen
 * @create: 2024-04-07
 **/
export interface ApiAuth {
  /**
   * 登录
   * @param params 定义的登录参数模型
   * @param mode 错误消息模式
   */
  login(params: LoginModel, mode: ErrorMessageMode): Promise<Oauth2Token>;

  /**
   * 退出登录
   */
  logout(): Promise<void>;

  /**
   * 根据登录后获取的授权 refreshToken（刷新令牌），重新获取授权信息
   * @param refreshToken 刷新令牌
   */
  refresh(refreshToken: string): Promise<Result>;

  /**
   * 验证码获取
   */
  getCaptcha(deviceId: string): Promise<string>;
}
